Cài đặt MariaDB trên Debian 11

Hướng dẫn cách cài đặt MariaDB trên máy chủ Debian 11 và kiểm tra đảm bảo đã chạy và có cấu hình ban đầu an toàn.

MariaDB là một hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở. Thường được sử dụng như một sự thay thế cho MySQL trong thành phần cơ sở dữ liệu của stack LAMP phổ biến (Linux, Apache, MySQL, PHP/Python/Perl). Nó được thiết kế để thay thế MySQL một cách dễ dàng.

Phiên bản ngắn gọn của hướng dẫn cài đặt bao gồm ba bước sau:

  • Cập nhật chỉ mục gói bằng lệnh apt
  • Cài đặt gói mariadb-server bằng lệnh apt. Gói này cũng sẽ cài đặt các công cụ liên quan để tương tác với MariaDB.
  • Chạy lệnh mysql_secure_installation đi kèm để hạn chế quyền truy cập vào máy chủ.
sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation

Yêu cầu tiên quyết

Để hoàn thành hướng dẫn cài đặt MariaDB trên Debian 11, bạn cần một máy chủ chạy hệ điều hành Debian Máy chủ này nên có một người dùng quản trị không phải là người dùng root và có tường lửa cấu hình bằng UFW.

Bước 1 — Cài đặt MariaDB

Hiện tại, trong các kho lưu trữ phần mềm mặc định của Debian 11, bao gồm phiên bản MariaDB 10.Nó được đánh dấu là biến thể MySQL mặc định bởi nhóm đóng gói MySQL/MariaDB của Debian.

Để cài đặt MariaDB, cập nhật chỉ mục gói trên máy chủ của bạn với lệnh apt:

sudo apt update

Sau đó, cài đặt gói:

sudo apt install mariadb-server

Những lệnh này sẽ cài đặt MariaDB, nhưng sẽ không yêu cầu bạn thiết lập mật khẩu hoặc thực hiện bất kỳ thay đổi cấu hình nào khác. Vì cấu hình mặc định để lại việc cài đặt MariaDB không an toàn, bạn sẽ sử dụng một script mà gói mariadb-server cung cấp để hạn chế quyền truy cập vào máy chủ và loại bỏ các tài khoản không sử dụng.

Bước 2 — Cấu hình MariaDB

Đối với các cài đặt MariaDB mới, bước tiếp theo là chạy script bảo mật đi kèm. Script này thay đổi một số tùy chọn mặc định ít an toàn cho các tùy chọn như đăng nhập root từ xa và người dùng mẫu.

Chạy script bảo mật:

sudo mysql_secure_installation

Điều này sẽ đưa bạn qua một loạt các thông báo nơi bạn có thể thực hiện một số thay đổi cho các tùy chọn bảo mật của cài đặt MariaDB của bạn. Thông báo đầu tiên sẽ yêu cầu bạn nhập mật khẩu root hiện tại của cơ sở dữ liệu. Vì bạn chưa thiết lập mật khẩu nào, hãy nhấn ENTER để chỉ định "không có mật khẩu".

Output
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, you'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):

Bạn sẽ được hỏi liệu bạn có muốn chuyển sang xác thực unix socket hay không. Vì bạn đã có một tài khoản root được bảo vệ, bạn có thể bỏ qua bước này. Gõ n và sau đó nhấn ENTER.

Output
. . .
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

Thông báo tiếp theo hỏi bạn liệu bạn có muốn thay đổi mật khẩu root hay không. Trên Debian 11, tài khoản root cho MariaDB liên quan chặt chẽ đến việc bảo trì tự động của hệ thống, vì vậy bạn không nên thay đổi các phương thức xác thực đã cấu hình cho tài khoản đó.

Làm như vậy sẽ khiến việc cập nhật gói có thể làm hỏng hệ thống cơ sở dữ liệu bằng cách loại bỏ quyền truy cập vào tài khoản quản trị. Gõ n và sau đó nhấn ENTER.

Output
Change the root password? [Y/n]

Sau đó, bạn có thể nhấn Y và sau đó nhấn ENTER để chấp nhận mặc định cho tất cả các câu hỏi tiếp theo. Điều này sẽ xóa một số tài khoản vô danh và cơ sở dữ liệu kiểm tra, tắt đăng nhập root từ xa và tải các quy tắc mới này để MariaDB ngay lập tức thực hiện các thay đổi bạn đã thực hiện.

Với điều đó, bạn đã hoàn thành cấu hình bảo mật ban đầu của MariaDB. Bước tiếp theo là một bước tùy chọn, tuy nhiên, bạn nên thực hiện nếu bạn muốn xác thực vào máy chủ MariaDB của mình bằng mật khẩu.

Bước 3 — (Tùy chọn) Tạo một người dùng quản trị sử dụng xác thực mật khẩu

Trên các hệ thống Debian chạy MariaDB 10.5, tài khoản root MariaDB được thiết lập để xác thực bằng cách sử dụng plugin unix_socket theo mặc định thay vì sử dụng mật khẩu. Điều này cho phép tăng cường bảo mật và tính khả dụng trong nhiều trường hợp, nhưng nó cũng có thể làm phức tạp các vấn đề khi bạn cần cho phép một chương trình bên ngoài (ví dụ: phpMyAdmin) có quyền quản trị.

Do máy chủ sử dụng tài khoản root cho các nhiệm vụ như quay log và bắt đầu và dừng máy chủ, nên tốt nhất là không thay đổi thông tin xác thực của tài khoản root. Thay đổi thông tin xác thực trong tệp cấu hình /etc/mysql/debian.cnf có thể hoạt động ban đầu, nhưng cập nhật gói có thể ghi đè lên những thay đổi đó. Thay vì sửa đổi tài khoản root, người duy trì gói khuyến nghị tạo một tài khoản quản trị riêng biệt cho truy cập dựa trên mật khẩu.

Với mục đích này, chúng ta sẽ tạo một tài khoản mới có tên admin với các quyền giống như tài khoản root, nhưng được cấu hình để xác thực bằng mật khẩu. Mở cửa sổ dòng lệnh MariaDB từ terminal của bạn:

sudo mariadb

Sau đó, tạo một người dùng mới với đặc quyền root và truy cập dựa trên mật khẩu. Hãy chắc chắn thay đổi tên người dùng và mật khẩu theo sở thích của bạn:

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Làm mới các quyền để đảm bảo rằng chúng được lưu và sẵn có trong phiên hiện tại:

FLUSH PRIVILEGES;

Sau đó, thoát khỏi shell MariaDB:

exit

Cuối cùng, hãy kiểm tra cài đặt MariaDB.

Bước 4 — Kiểm tra MariaDB

Khi được cài đặt từ các kho lưu trữ mặc định, MariaDB sẽ tự động chạy. Để kiểm tra điều này, kiểm tra trạng thái của nó.

sudo systemctl status mariadb

Bạn sẽ nhận được đầu ra tương tự như sau:

Output
● mariadb.service - MariaDB 10.5.15 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-03-11 22:01:33 UTC; 14min ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
. . .

Nếu MariaDB không chạy, bạn có thể khởi động nó bằng lệnh sudo systemctl start mariadb.

Để kiểm tra thêm, bạn có thể thử kết nối vào cơ sở dữ liệu bằng công cụ mysqladmin, đó là một công cụ khách hàng cho phép chạy các lệnh quản trị. Ví dụ, lệnh này yêu cầu kết nối đến MariaDB với tư cách root sử dụng Unix socket và trả về phiên bản:

sudo mysqladmin version

Bạn sẽ nhận được đầu ra tương tự như sau:

Output
mysqladmin Ver 9.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version 10.5.15-MariaDB-0+deb11u1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /run/mysqld/mysqld.sock
Uptime: 4 min 20 sec

Threads: 1 Questions: 72 Slow queries: 0 Opens: 32 Open tables: 25 Queries per second avg: 0.276

Kết luận

Trong hướng dẫn này, bạn đã cài đặt hệ thống quản lý cơ sở dữ liệu quan hệ MariaDB trên Debian Bảo mật chúng bằng script mysql_secure_installation đi kèm. Bạn cũng có thể tạo một người dùng quản trị mới sử dụng xác thực mật khẩu trước khi kiểm tra chức năng của máy chủ MariaDB.